/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * WindowTestTrueFalse.java
 *
 * Created on 2013-02-12, 11:46:58
 */

package wkfquestions;
import java.util.*;
/**
 *
 * @author Przemo
 */
public class WindowTestTrueFalse extends javax.swing.JFrame {
    
    PytaniaTrueFalse pytaniaTF = new PytaniaTrueFalse();

    boolean czy_wlacz;
    boolean start_wlacz;
    boolean TF_po_kolei;
    boolean TF_losowo;
    boolean czy_egzamin;

    int poczatkowe_pytanie;

    //dane do egzaminu
    String imie; //uzytkownika
    String nazwisko; //uzytkownika
    int liczba_punktow; //uzyskanych przez użytkownika
    int liczba_pytan_egzamin;
//koniec danych do egzaminu

    Random rand = new Random();//do losowania pytań
    boolean tablicaTF[] = new boolean[pytaniaTF.liczba_pytan]; //do sprawdzania czy juz byl dany numer pytania
  
    int pomoc;
    /** Creates new form WindowTestTrueFalse */
    public WindowTestTrueFalse() {
        initMyComponents();
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        bFalse = new java.awt.Button();
        bTrue = new java.awt.Button();
        bStart = new java.awt.Button();
        labelPytanie = new java.awt.Label();
        labelDobrzeZle = new java.awt.Label();
        labelKomentarz = new java.awt.Label();
        bDalej = new java.awt.Button();
        bWstecz = new java.awt.Button();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        bFalse.setLabel("Fałsz");
        bFalse.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bFalseActionPerformed(evt);
            }
        });

        bTrue.setLabel("Prawda");
        bTrue.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                bTrueMouseClicked(evt);
            }
        });
        bTrue.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bTrueActionPerformed(evt);
            }
        });

        bStart.setFont(new java.awt.Font("Dialog", 1, 14));
        bStart.setLabel("Start");
        bStart.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bStartActionPerformed(evt);
            }
        });

        labelPytanie.setAlignment(java.awt.Label.CENTER);
        labelPytanie.setText("labelPytanie");

        labelDobrzeZle.setAlignment(java.awt.Label.CENTER);
        labelDobrzeZle.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        labelDobrzeZle.setText("labelDobrzeZle");

        labelKomentarz.setAlignment(java.awt.Label.CENTER);
        labelKomentarz.setText("labelKomentarz");

        bDalej.setLabel("Dalej");
        bDalej.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bDalejActionPerformed(evt);
            }
        });

        bWstecz.setFont(new java.awt.Font("Dialog", 1, 14));
        bWstecz.setLabel("Wstecz");
        bWstecz.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bWsteczActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addGap(412, 412, 412)
                        .addComponent(bFalse, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(99, 99, 99)
                        .addComponent(bTrue, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(labelDobrzeZle, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 1004, Short.MAX_VALUE)
                            .addComponent(labelKomentarz, javax.swing.GroupLayout.DEFAULT_SIZE, 1004, Short.MAX_VALUE)))
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(labelPytanie, javax.swing.GroupLayout.PREFERRED_SIZE, 994, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addGap(457, 457, 457)
                        .addComponent(bStart, javax.swing.GroupLayout.PREFERRED_SIZE, 101, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(480, 480, 480)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(bDalej, javax.swing.GroupLayout.PREFERRED_SIZE, 64, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(bWstecz, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(468, 468, 468)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(bStart, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(labelPytanie, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(9, 9, 9)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(bFalse, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(bTrue, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(33, 33, 33)
                .addComponent(labelDobrzeZle, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(labelKomentarz, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(bDalej, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(bWstecz, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void bFalseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bFalseActionPerformed
        // TODO add your handling code here:
        if(czy_wlacz){
            UstawPrzyciskiPoStart();
        }
      //PYTANIA PO KOLEI LUB LOSOWO
      if(czy_wlacz && !czy_egzamin){
          PytaniaSprawdzOdpowiedz(false);
      }
      //PYTANIA EGZAMIN
      if(czy_wlacz && czy_egzamin){
          PytaniaEgzamin(false);
      }
}//GEN-LAST:event_bFalseActionPerformed

    private void bTrueMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_bTrueMouseClicked
        // TODO add your handling code here:
}//GEN-LAST:event_bTrueMouseClicked

    private void bTrueActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bTrueActionPerformed

       // TODO add your handling code here:
       if(czy_wlacz){
           UstawPrzyciskiPoStart();
       }
       //PYTANIA PO KOLEI lub LOSOWO
       if(czy_wlacz && !czy_egzamin){
           PytaniaSprawdzOdpowiedz(true);
       }
      //Jesli EGZAMIN
      if(czy_wlacz && czy_egzamin){
          PytaniaEgzamin(true);
      }
}//GEN-LAST:event_bTrueActionPerformed

    private void bStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bStartActionPerformed
        // TODO add your handling code here:
        FunkcjeDlaStart();
}//GEN-LAST:event_bStartActionPerformed

    private void bDalejActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bDalejActionPerformed
        // TODO add your handling code here:
     FunkcjeDlaDalej();
    }//GEN-LAST:event_bDalejActionPerformed

    private void bWsteczActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bWsteczActionPerformed
        // TODO add your handling code here:
           this.setVisible(false);
        this.dispose();
        new KumiteTrueFalse().setVisible(true);
    }//GEN-LAST:event_bWsteczActionPerformed

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new WindowTestTrueFalse().setVisible(true);
            }
        });
    }

    void UstawLabelPytanie(String tekst){
        labelPytanie.setText(tekst);
    }
    void UstawLabelDobrzeZle(String tekst){
        labelDobrzeZle.setText(tekst);
    }
    void UstawLabelKomentarz(String tekst){
        labelKomentarz.setText(tekst);
    }

    void UstawPoczatkowePytanie(int liczba){
        poczatkowe_pytanie = liczba;
    }

    void PokazPrzyciskiTrueFalseNext(){
        bTrue.setVisible(true);
        bFalse.setVisible(true);
        bDalej.setVisible(true);
    }

    void UkryjPrzyciskiTrueFalseNext(){
        this.bTrue.setVisible(false);
        this.bFalse.setVisible(false);
        this.bDalej.setVisible(false);
    }

        void UstawLiczbePytan(int liczba){
        liczba_pytan_egzamin = liczba;
    }

     void UstawImieNazwisko(String imieU, String nazwiskoU){
        imie = imieU;
        nazwisko = nazwiskoU;
    }

     void ToEgzamin(){
         czy_egzamin = true;
     }

     void UstawPrzyciskiPoStart(){//ukrywanie bądź pokazywanie przycisków w zależności od potrzeb
         bDalej.setVisible(true);

           if(!czy_egzamin){
               bTrue.setVisible(false);
               bFalse.setVisible(false);
           }
           this.setVisible(true);
     }

     void UstawPrzyciskiGdyKoniec(){
         labelPytanie.setText("Koniec. Wciśnij Start, by rozpocząć wyświetlanie pytań");
         czy_wlacz = false;
         start_wlacz = false;
         bStart.setVisible(true);
         bTrue.setVisible(false);
         bFalse.setVisible(false);
         this.setVisible(true);
     }

     void PytaniaSprawdzOdpowiedz(boolean przycisk){//ogólnie rozpierdol tu jest, ale działa jak powinno
         char litera;
         if(przycisk){
             litera = 't';
         }
         
         else{
             litera = 'n';
         }
          if(pytaniaTF.licznik == pytaniaTF.pytania.length){
              czy_wlacz = false;
              labelPytanie.setText("Koniec :)");
              pytaniaTF.licznik = 0;
          }

          else{
              czy_wlacz = false;
              if(pytaniaTF.odpowiedzi[pytaniaTF.licznik] == litera){//dobra odpowiedz
                  labelDobrzeZle.setText("Zajebiscie");
                  labelKomentarz.setText("");
              }

              else{//zla odpowiedz
                  labelDobrzeZle.setText("Chujowo");
                  labelKomentarz.setText(pytaniaTF.komentarze[pytaniaTF.licznik]);
              }

              pytaniaTF.licznik += 1;
          }
     }

     void PytaniaEgzamin(boolean przycisk){//ogólnie rozpierdol tu jest, ale działa jak powinno
         char litera;
         if(przycisk){
             litera = 't';
         }

         else{
             litera = 'n';
         }

         bDalej.setVisible(false);
          bTrue.setVisible(true);
          bFalse.setVisible(true);

          if(czy_wlacz){
              czy_wlacz = false;

              if(pytaniaTF.licznik  != liczba_pytan_egzamin){
                  czy_wlacz = false;

                  if(pytaniaTF.odpowiedzi[pomoc] == litera){//dobra odpowiedz
                      liczba_punktow += 1;
                  }

                  pytaniaTF.licznik += 1;
              }

              if(pytaniaTF.licznik == liczba_pytan_egzamin){
                  bFalse.setVisible(false);
                  bTrue.setVisible(false);
                  bWstecz.setVisible(true);
                  this.setVisible(true);

                  labelPytanie.setText("Koniec");
                  labelDobrzeZle.setText(imie + " " + nazwisko +", Twój wynik to: " + Integer.toString(liczba_punktow) + "/" + Integer.toString(liczba_pytan_egzamin));
                  czy_wlacz = false;
                  start_wlacz = false;
                  pytaniaTF.licznik = 0;

                //wyswietlenie komentarza
                if(liczba_punktow >= 0.9*liczba_pytan_egzamin){
                    labelKomentarz.setText("BRAWO, OSIAGNALES BARDZO DOBRY WYNIK");
                }
                if(liczba_punktow >= 0.7*liczba_pytan_egzamin && liczba_punktow < 0.9*liczba_pytan_egzamin ){
                    labelKomentarz.setText("\tTWOJ WYNIK JEST DOBRY");
                }
                if(liczba_punktow >= 0.5*liczba_pytan_egzamin && liczba_punktow < 0.7*liczba_pytan_egzamin ){
                    labelKomentarz.setText("\tSREDNIO, MOZE BYC LEPIEJ");
                }
                if(liczba_punktow < 0.5*liczba_pytan_egzamin){
                    labelKomentarz.setText("\tPOCZYTAJ PRZEPISY, DUZO RZECZY NIE WIESZ");
                }
            }

            else{
                do{
                    pomoc = rand.nextInt(pytaniaTF.liczba_pytan);
                }while(tablicaTF[pomoc]);

                tablicaTF[pomoc] = true;
                labelPytanie.setText(pytaniaTF.pytania[pomoc]);
                czy_wlacz = true;
            }
          }
     }

     void FunkcjeDlaStart(){
         bStart.setVisible(false);
         bDalej.setVisible(false);
         bTrue.setVisible(true);
         this.bFalse.setVisible(true);
         this.setVisible(true);

         if(!start_wlacz){
             pytaniaTF.licznik = 0;
             start_wlacz = true;

             if(TF_po_kolei){
                 labelPytanie.setText(pytaniaTF.pytania[poczatkowe_pytanie - 1]);
                 pytaniaTF.licznik = poczatkowe_pytanie - 1;
                 labelDobrzeZle.setText("");
                 labelKomentarz.setText("");
                 czy_wlacz = true;
             }

             if(TF_losowo){
                 Losuj();

                tablicaTF[pomoc] = true;
                labelPytanie.setText(pytaniaTF.pytania[pomoc]);//jeszcze nie wiem jak losowac liczbe z przedziału
                labelDobrzeZle.setText("");
                labelKomentarz.setText("");
                czy_wlacz = true;
            }

            if(czy_egzamin){
                Losuj();

                tablicaTF[pomoc] = true;
                labelPytanie.setText(pytaniaTF.pytania[pomoc]);//jeszcze nie wiem jak losowac liczbe z przedziału
                czy_wlacz = true;
            }
         }
     }

     void FunkcjeDlaDalej(){
         if(start_wlacz){
             bTrue.setVisible(true);
             bFalse.setVisible(true);
             bDalej.setVisible(false);
             this.setVisible(true);

             if(TF_po_kolei){
                 if(pytaniaTF.licznik == pytaniaTF.liczba_pytan){
                     UstawPrzyciskiGdyKoniec();
                 }
                 
                 else{
                     labelPytanie.setText(pytaniaTF.pytania[pytaniaTF.licznik]);
                     czy_wlacz = true;
                 }

                 labelDobrzeZle.setText("");
                 labelKomentarz.setText("");
             }

             if(TF_losowo){
                 if(pytaniaTF.licznik == pytaniaTF.liczba_pytan){
                     UstawPrzyciskiGdyKoniec();
                 }
                 
                 else{
                     do{
                         pomoc = rand.nextInt(pytaniaTF.liczba_pytan);
                     }while(tablicaTF[pomoc]);

                     tablicaTF[pomoc] = true;
                     labelPytanie.setText(pytaniaTF.pytania[pomoc]);
                     czy_wlacz = true;
                 }

                 labelDobrzeZle.setText("");
                 labelKomentarz.setText("");
             }
         }
     }

     void initMyComponents(){
         poczatkowe_pytanie = 1;
        czy_egzamin = false;
        liczba_pytan_egzamin = 0;
        liczba_punktow = 0;
        imie = "";
        nazwisko = "";
        this.setTitle("Pytania testowe kumite prawda/fałsz");
        for(int i = 0; i < pytaniaTF.liczba_pytan; i++){
            tablicaTF[i] = false;
        }

        TF_po_kolei = false;
        TF_losowo = false;
        czy_wlacz = false;
        start_wlacz = false;
     }

     void Losuj(){
         for(int i = 0; i < pytaniaTF.liczba_pytan; i++){
                     tablicaTF[i] = false;
                }

                do{
                    pomoc = rand.nextInt(pytaniaTF.liczba_pytan);
                }while(tablicaTF[pomoc]);
     }


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private java.awt.Button bDalej;
    private java.awt.Button bFalse;
    private java.awt.Button bStart;
    private java.awt.Button bTrue;
    private java.awt.Button bWstecz;
    private java.awt.Label labelDobrzeZle;
    private java.awt.Label labelKomentarz;
    private java.awt.Label labelPytanie;
    // End of variables declaration//GEN-END:variables

}
